package com.atguigu.java;

import org.junit.Test;

import java.util.Optional;

/**
 * @author : leimingchao
 * @Description:
 * @date Date : 2021年06月19日 22:31
 */
public class OptionalTest {


    @Test
    public void test() {
        //empty()：创建的Optional对象内部的value = null
        Optional<Object> optional = Optional.empty();
        //Optional封装的数据是否包含数据
        if (!optional.isPresent()) {
            System.out.println("数据为空");
        }
        // System.out.println(optional.get());
        System.out.println(optional);
        System.out.println(optional.isPresent());
        //如果optional封装的数据value为空，则get()报错，否则value不为空时，返回value
        System.out.println(optional.get());
    }

    @Test
    public void test2() {
        String str = "hello";
        str = null;
        //of(T t):封装数据t生成Optional对象，要求t非空，否则报错
        Optional<String> optional = Optional.of(str);
        //get()通常与of()方法搭配使用，用于获取内部封装的数据value
        System.out.println(optional.get());
    }

    @Test
    public void test3() {
        String str = "beijing";
        str = null;
        //ofNullable(T t):封装数据t赋给Optional内部的value，不要求t非空
        Optional<String> optional = Optional.ofNullable(str);
        //orElse(T t1):如果Optional内部的value非空，则返回此value。如果value为空，则返回t1
        String str2 = optional.orElse("shanghai");
        System.out.println(str2);
    }
}
